package com.jrx.anytxn.transaction.dto.loan;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @ClassName RepaymentPlanInfo
 *  还款计划列表详情响应实体
 * @author  Administrator
 * date  2019/8/6 0006
 * @Version V1.0
 **/
public class PlanRes implements Serializable {
    /**
     * 期数
     */
    private Integer tenorNo;

    /**
     * 还款日
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date paymentDueDate;

    /**
     * 应还本金
     */
    private BigDecimal payablePrincipal = BigDecimal.ZERO;

    /**
     * 实还本金
     */
    private BigDecimal paymentPrincipal = BigDecimal.ZERO;

    /**
     * 应还利息
     */
    private BigDecimal payableInterest = BigDecimal.ZERO;

    /**
     * 实还利息
     */
    private BigDecimal paymentInterest = BigDecimal.ZERO;

    /**
     * 应还罚息
     */
    private BigDecimal payablePenaltyInterest = BigDecimal.ZERO;

    /**
     * 实还罚息
     */
    private BigDecimal paymentPenaltyInterest = BigDecimal.ZERO;

    /**
     * 应还复利
     */
    private BigDecimal payableCompoundInterest = BigDecimal.ZERO;

    /**
     * 实还复利
     */
    private BigDecimal paymentCompoundInterest = BigDecimal.ZERO;

    /**
     * 应还费用
     */
    private BigDecimal payableFee = BigDecimal.ZERO;

    /**
     * 实还费用
     */
    private BigDecimal paymentFee = BigDecimal.ZERO;


    /**
     * 还款状态
     */
    private String paymentFlag;

    /**
     * 实际还款日
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date paymentDate;

    /**
     * 剩余应还罚息
     */
    private BigDecimal penaltyIntAmount = BigDecimal.ZERO;

    /**
     * 优惠金额
     */
    private BigDecimal exemptAmount = BigDecimal.ZERO;

    /**
     * 剩余应还款
     */
    private BigDecimal totalAmount = BigDecimal.ZERO;

    /**
     * 剩余应还本金
     */
    private BigDecimal principalAmount = BigDecimal.ZERO;

    /**
     * 剩余应还利息
     */
    private BigDecimal interestAmount = BigDecimal.ZERO;

    /**
     * 剩余应还费用
     */
    private BigDecimal feeAmount = BigDecimal.ZERO;

    /**
     * 剩余应还复利
     */
    private BigDecimal compoundAmount;

    public Integer getTenorNo() {
        return tenorNo;
    }

    public void setTenorNo(Integer tenorNo) {
        this.tenorNo = tenorNo;
    }

    public Date getPaymentDueDate() {
        return paymentDueDate;
    }

    public void setPaymentDueDate(Date paymentDueDate) {
        this.paymentDueDate = paymentDueDate;
    }

    public BigDecimal getPayablePrincipal() {
        return payablePrincipal;
    }

    public void setPayablePrincipal(BigDecimal payablePrincipal) {
        this.payablePrincipal = payablePrincipal;
    }

    public BigDecimal getPaymentPrincipal() {
        return paymentPrincipal;
    }

    public void setPaymentPrincipal(BigDecimal paymentPrincipal) {
        this.paymentPrincipal = paymentPrincipal;
    }

    public BigDecimal getPayableInterest() {
        return payableInterest;
    }

    public void setPayableInterest(BigDecimal payableInterest) {
        this.payableInterest = payableInterest;
    }

    public BigDecimal getPaymentInterest() {
        return paymentInterest;
    }

    public void setPaymentInterest(BigDecimal paymentInterest) {
        this.paymentInterest = paymentInterest;
    }

    public BigDecimal getPayablePenaltyInterest() {
        return payablePenaltyInterest;
    }

    public void setPayablePenaltyInterest(BigDecimal payablePenaltyInterest) {
        this.payablePenaltyInterest = payablePenaltyInterest;
    }

    public BigDecimal getPaymentPenaltyInterest() {
        return paymentPenaltyInterest;
    }

    public void setPaymentPenaltyInterest(BigDecimal paymentPenaltyInterest) {
        this.paymentPenaltyInterest = paymentPenaltyInterest;
    }

    public BigDecimal getPayableFee() {
        return payableFee;
    }

    public void setPayableFee(BigDecimal payableFee) {
        this.payableFee = payableFee;
    }

    public BigDecimal getPaymentFee() {
        return paymentFee;
    }

    public void setPaymentFee(BigDecimal paymentFee) {
        this.paymentFee = paymentFee;
    }

    public String getPaymentFlag() {
        return paymentFlag;
    }

    public void setPaymentFlag(String paymentFlag) {
        this.paymentFlag = paymentFlag;
    }

    public Date getPaymentDate() {
        return paymentDate;
    }

    public void setPaymentDate(Date paymentDate) {
        this.paymentDate = paymentDate;
    }

    public BigDecimal getPenaltyIntAmount() {
        return penaltyIntAmount;
    }

    public void setPenaltyIntAmount(BigDecimal penaltyIntAmount) {
        this.penaltyIntAmount = penaltyIntAmount;
    }

    public BigDecimal getExemptAmount() {
        return exemptAmount;
    }

    public void setExemptAmount(BigDecimal exemptAmount) {
        this.exemptAmount = exemptAmount;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getPrincipalAmount() {
        return principalAmount;
    }

    public void setPrincipalAmount(BigDecimal principalAmount) {
        this.principalAmount = principalAmount;
    }

    public BigDecimal getInterestAmount() {
        return interestAmount;
    }

    public void setInterestAmount(BigDecimal interestAmount) {
        this.interestAmount = interestAmount;
    }

    public BigDecimal getFeeAmount() {
        return feeAmount;
    }

    public void setFeeAmount(BigDecimal feeAmount) {
        this.feeAmount = feeAmount;
    }

    public BigDecimal getPayableCompoundInterest() {
        return payableCompoundInterest;
    }

    public void setPayableCompoundInterest(BigDecimal payableCompoundInterest) {
        this.payableCompoundInterest = payableCompoundInterest;
    }

    public BigDecimal getPaymentCompoundInterest() {
        return paymentCompoundInterest;
    }

    public void setPaymentCompoundInterest(BigDecimal paymentCompoundInterest) {
        this.paymentCompoundInterest = paymentCompoundInterest;
    }

    public BigDecimal getCompoundAmount() {
        return compoundAmount;
    }

    public void setCompoundAmount(BigDecimal compoundAmount) {
        this.compoundAmount = compoundAmount;
    }
}
